package Test26;

//成员内部类
/*
 编写成员内部类的注意点:
     1.成员内部类可以被一些修饰符所修饰，比如: private，默认，protected，public，static等
     2.在成员内部类里面，JDK16之前不能定义静态变量，JDK16开始才可以定义静态变量。

 获取成员内部类对象的两种方式:
     方式一:外部类编写方法，对外提供内部类对象（private修饰内部类，外界不能直接创建内部类对象是使用这种方式）
     方式二:直接创建
     格式:外部类名.内部类名对象名=外部类对象.内部类对象;
     范例: Outer.Inner oi = new Outer( ).new Inner( );
*/

public class Test02 {
    public static void main(String[] args) {

        /*//方式一（1）
        Outer o = new Outer();
        Object inner = o.getInstance();
        System.out.println(inner);*/

        //方式一（2）
        Outer02 o = new Outer02();
        System.out.println(o.getInstance());

        //方式二  Outer.Inner oi = new Outer().new Inner();
    }
}


class Outer02 {

    //private修饰内部类，外界不能直接创建内部类对象
    private class Inner {
        //在成员内部类里面，JDK16之前不能定义静态变量，JDK16开始才可以定义静态变量。
        //static int a = 10;
    }

    public Inner getInstance() {
        return new Inner();
    }
}
